﻿#define _CRT_SECURE_NO_WARNINGS 1

#include "SList.h"
#include "Contact.h"

void LoadContact(contact** con)
{
	FILE* pf = fopen("contact.txt","rb");
	if (pf == NULL)
	{
		perror("fopen fail!");
		exit(1);
	}
	PeoInfo info;
	while (fread(&info, sizeof(info), 1, pf))
	{
		SLTPushBack(con, info);
	}
	printf("历史记录导入成功!\n");
}
void InitContact(contact** con)
{
	LoadContact(con);
}

//添加通讯录数据
void AddContact(contact** con)
{
	PeoInfo info;
	printf("请输⼊姓名：\n");
	scanf("%s", &info.name);
	printf("请输⼊性别：\n");
	scanf("%s", &info.sex);
	printf("请输⼊年龄：\n");
	scanf("%d", &info.age);
	printf("请输⼊联系电话：\n");
	scanf("%s", &info.tel);
	printf("请输⼊地址：\n");
	scanf("%s", &info.addr);

	SLTPushBack(con, info);
	printf("联系人添加成功!\n");
}
contact* FindByName(contact** con, char name[])
{
	assert(con);
	contact* pcur = *con;
	while (pcur)
	{
		if (strcmp(name, pcur->data.name) == 0)
		{
			return pcur;
		}
		pcur = pcur->next;
	}
	return NULL;
}
//删除通讯录数据
void DelContact(contact** con)
{
	char name[NAME_MAX];
	printf("请输入要删除的联系人姓名:>>");
	scanf("%s", &name);
	contact* pos = FindByName(con, name);
	if (pos == NULL)
	{
		printf("联系人不存在\n");
		return;
	}
	SLTErase(con, pos);
	printf("联系人删除成功\n");
}
//展示通讯录数据
void ShowContact(contact* con)
{
	assert(con);
	contact* pcur = con;
	printf("姓名 性别 年龄 电话 住址\n");
	while (pcur)
	{
		printf("%s %s %d %s %s",
			pcur->data.name,
			pcur->data.sex,
			pcur->data.age,
			pcur->data.tel,
			pcur->data.addr
		);
		pcur = pcur->next;
	}
}
//查找通讯录数据
void FindContact(contact* con)
{
	char name[NAME_MAX];
	printf("请输入要查找的联系人姓名:>>");
	scanf("%s", &name);
	contact* pos = FindByName(&con, name);
	if (pos == NULL)
	{
		printf("联系人不存在\n");
		return;
	}
	printf("查找的联系人信息如下:");
	printf("%s %s %d %s %s",
		pos->data.name,
		pos->data.sex,
		pos->data.age,
		pos->data.tel,
		pos->data.addr
	);
}
//修改通讯录数据
void ModifyContact(contact** con)
{
	char name[NAME_MAX];
	printf("请输入要修改的联系人姓名:>>");
	scanf("%s", &name);
	contact* pos = FindByName(con, name);
	if (pos == NULL)
	{
		printf("联系人不存在\n");
		return;
	}
	printf("请输⼊姓名：\n");
	scanf("%s", &pos->data.name);
	printf("请输⼊性别：\n");
	scanf("%s", &pos->data.sex);
	printf("请输⼊年龄：\n");
	scanf("%d", &pos->data.age);
	printf("请输⼊联系电话：\n");
	scanf("%s", &pos->data.tel);
	printf("请输⼊地址：\n");
	scanf("%s", &pos->data.addr);

	printf("联系人修改成功!\n");
}
//销毁通讯录数据
void DestroyContact(contact** con)
{
	SListDesTroy(con);
	printf("销毁成功\n");
}